package com.zenithmind.common.security;

/**
 * 安全规则管理器接口
 * 遵循接口隔离原则：专门处理安全规则的管理操作
 */
public interface SecurityRuleManager {
    
    /**
     * 刷新规则
     * 从数据源重新加载规则
     */
    void refreshRules();
    
    /**
     * 获取当前服务代码
     *
     * @return 服务代码
     */
    String getServiceCode();
    
    /**
     * 设置服务代码
     *
     * @param serviceCode 服务代码
     */
    void setServiceCode(String serviceCode);
    
    /**
     * 初始化默认规则
     */
    void initDefaultRules();
    
    /**
     * 清空所有规则
     */
    void clearAllRules();
    
    /**
     * 获取规则数量统计
     *
     * @return 规则统计信息
     */
    SecurityRuleStatistics getRuleStatistics();
    
    /**
     * 安全规则统计信息
     */
    class SecurityRuleStatistics {
        private int publicPathCount;
        private int roleRuleCount;
        private String serviceCode;
        
        public SecurityRuleStatistics(int publicPathCount, int roleRuleCount, String serviceCode) {
            this.publicPathCount = publicPathCount;
            this.roleRuleCount = roleRuleCount;
            this.serviceCode = serviceCode;
        }
        
        public int getPublicPathCount() {
            return publicPathCount;
        }
        
        public int getRoleRuleCount() {
            return roleRuleCount;
        }
        
        public String getServiceCode() {
            return serviceCode;
        }
    }
}
